package com.yungu.swift.order.model.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.yungu.swift.assets.driver.model.vo.DriverVo;
import com.yungu.swift.assets.passenger.model.vo.PassengerVo;
import com.yungu.swift.base.model.BaseVo;
import com.yungu.swift.base.model.annotation.AbsoluteImgPath;
import com.yungu.swift.base.model.annotation.Desensitization;
import com.yungu.swift.order.model.dto.OrderEvaluateDto;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author Zerrion
 * @description
 * @date 2016/12/14. <br>
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class JsonOrderDetailVo extends BaseVo {
    /**
     * 订单编号
     */
    private String orderNo;
    /**
     * 订单子状态
     **/
    private Integer subStatus;

    /**
     * 乘客投诉状态
     **/
    private Integer passengerCom = 0;
    /**
     * 司机投诉状态
     **/
    private Integer driverCom = 0;

    /**
     * 起点详细地址
     **/
    private String originDetailAddress;
    /**
     * 起点标题
     **/
    private String originAddress;
    /**
     * 起点经度
     **/
    private String originLng;
    /**
     * 起点纬度
     **/
    private String originLat;
    /**
     * 起点城市
     **/
    private String originCity;
    /**
     * 出发城市uuid
     */
    private String originCityUuid;
    /**
     * 目的地详细地址
     **/
    private String destDetailAddress;
    /**
     * 目的地标题
     **/
    private String destAddress;

    /**
     * 目的经度
     **/
    private String destLng;
    /**
     * 目的纬度
     **/
    private String destLat;
    /**
     * 目的城市
     **/
    private String destCity;

    /**
     * 订单类型（时效性）：1 实时订单， 2 预约订单
     **/
    private Integer typeTime;
    /**
     * 订单类型（行程）：1：用车，2：日租，3：半日租，4：送机，5：接机
     **/
    private Integer typeTrip;
    /**
     * 订单总费用（=司机收入=各费用之和*高峰溢价率+附加服务费等+（后台）调整价格）
     **/
    private Double totalFare;
    /**
     * 出发时间
     **/
    private Date deparTime;
    /**
     * 实际乘车人姓名
     **/
    private String actualPasNam;
    /**
     * 实际乘车人号码
     **/
    @Desensitization(type = Desensitization.DesensitionType.MOBILE)
    private String actualPasMob;
    /**
     * 实际乘车人数
     **/
    private Integer actualPasNum;

    /**
     * 乘客信息
     **/
    private PassengerVo passenger;
    /**
     * 司机信息
     **/
    private DriverVo driver;
    /**
     * 评价信息
     **/
    private OrderEvaluateDto comment;
    /**
     * 调度费
     **/
    private Double tip;
    /**
     * 乘客留言
     **/
    private String remark;
    /**
     * 取消理由
     **/
    private String cancelReason;
    /**
     * 打车费
     **/
    private Double actualFare;
    /**
     * 优惠券支付
     **/
    private Double couponFare;
    /**
     * 支付方式（1.支付宝 2.微信 3.余额 4.企业支付）
     **/
    private Integer payType;
    /**
     * 支付状态（0未支付 1已支付 2退款中 3已退款）
     **/
    private Integer payStatus;
    /**
     * 倒计时时间
     **/
    private Long countdown;
    /**
     * 是否超过24小时
     **/
    private int overTime;
    /**
     * 播报
     **/
    private String report;
    /**
     * 车型
     **/
    private String carModelValuationUuid;
    /**
     * 超时等待时长
     **/
    private Integer waitDuration;

    /**
     * 订单异常备注
     */
    private Integer typeAbnormal;
    /**
     * 优惠券的uuid
     **/
    private String couponUuid;

    /**
     * 订单主状态
     **/
    private Integer mainStatus;
    /**
     * （预约单）司机是否可以出发去接乘客（0:不可以；1:可以）
     **/
    private Integer canPickUp = 0;
    /**
     * 司机是否可以催促乘客付款（0:不可以；1:可以）
     **/
    private Integer canHurryPay = 0;

    /**
     * 订单标题提示
     **/
    private String title;

    /**
     * 调整费
     */
    private Double adjustFare;

    /**
     * 优惠金额
     */
    private Double couponPrice;

    /**
     * 预估行程
     **/
    private Double planTrip;


    /**
     * 主&子类型（1：主订单，2：子订单）
     **/
    private Integer typeMain;

    /**
     * 订单模块类型（1：快车，2：专车，3：出租车）
     **/
    private Integer typeModule;

    /**
     * 订单交互类型（1：推单，2：抢单）
     **/
    private Integer typeInteractive;

    /**
     * 订单代叫类型（1 本人；2 代客）
     **/
    private Integer typeSelf;

    /**
     * 订单车型ID
     **/
    private String carModelUuid;

    /**
     * 最终车费
     **/
    private BigDecimal latestOrderFare;

    /**
     * 航班号
     **/
    private String flightNumber;


    /**
     * 订单车型名称
     **/
    private String carModelName;

    /**
     * 订单车型图片编码
     **/
    private String carLevelImageCode;

    /**
     * 拼车路线ID
     **/
    private String wayUuid;

    /**
     * 拼车业务状态：100提交（待支付）、200预约中（已支付）、300预约成功（待安排）、400已安排（待出发）、500行程开始、600行程结束（已完成）
     **/
    private Integer joinStatus;

    /**
     * 拼车类型（1拼车 2包车）
     **/
    private Integer typeJoin;

    /**
     * 订单关闭状态（0正常 1关闭）
     **/
    private Integer closeStatus;

    /**
     * 订单关闭类型（PAS_CANCEL乘客主动取消 DRI_CANCEL司机端取消【预留】 TIME_OUT超时系统自动取消 ADMIN_CLOSE后台关闭 默认：null）
     **/
    private String closeType;

    /**
     * 订单关闭原因
     **/
    private String closeReason;

    /**
     * 成人乘客数量
     **/
    private Integer adultNum;

    /**
     * 订单座位数
     **/
    private Integer seatNum;
    /**
     * 剩余可乘坐人数（拼车主订单）
     **/
    private Integer resNum;

    /**
     * 订单支付时间
     **/
    private Date payTime;

    /**
     * 主订单UUID
     **/
    private String mainOrderUuid;

    /**
     * 实际接单司机
     **/
    private String actualDriverUuid;

    /**
     * 退款金额
     **/
    private Double refundMoney;

    /**
     * 乘客主键ID
     **/
    private String passengerUuid;

    /**
     * 跨城起点名称
     */
    private String originName;
    /**
     * 跨城终点名称
     */
    private String destName;

    /**
     * 订单来源
     */
    private Integer source;

    /**
     * gzip压缩之后的订单位置点字符串
     **/
    private String tracePoints;

    /**
     * 收件人
     */
    @Desensitization(type = Desensitization.DesensitionType.NAME)
    private String receiverName;

    /**
     * 收件人电话
     */
    @Desensitization(type = Desensitization.DesensitionType.MOBILE)
    private String receiverMobile;

    /**
     * 收件码
     */
    private String receiptCode;

    /**
     * 确认收货码
     */
    private String confirmReceiptCode;

    /**
     * 订单ID
     */
    private String orderUuid;

    /**
     * 寄件人
     */
    @Desensitization(type = Desensitization.DesensitionType.NAME)
    private String senderName;

    /**
     * 寄件人电话
     */
    @Desensitization(type = Desensitization.DesensitionType.MOBILE)
    private String senderMobile;

    /**
     * 货件信息名称
     */
    private String parcelInfoName;

    /**
     * 货件类型名称
     */
    private String parcelTypeName;

    /**
     * 货件重量名称
     */
    private String parcelWeightName;

    /**
     * 货件体积名称
     */
    private String parcelVolumeName;

    /**
     * 货件照片
     */
    @AbsoluteImgPath
    private String parcelPhoto;

    /**
     * 货件加价
     */
    private Double parcelRaisePrice;

    /**
     * 小件订单数
     */
    private Integer parcelOrderNum;

    /**
     * 拼友订单信息
     */
    private List<AllPassengerOrderVo> allPassengerOrderInfo;

    /**
     * 当前激活的订单ID
     */
    private String activateOrderUuid;

    /**
     * 当前激活的用户昵称
     */
    private String activatePassengerName;

    /**
     * 当前激活的订单类型
     */
    private Integer activateOrderModule;

    /**
     * 司机等待时间
     */
    private Long driverWaitTime;

    /**
     * 主订单状态
     */
    private Integer mainJoinStatus;

    /**
     * 起点特殊区域加价
     */
    private Double originRaisePrice;

    /**
     * 终点特殊区域加价
     */
    private Double destRaisePrice;

    /**
     * 夜间加价
     */
    private Double nightRaisePrice;

    /**
     * 是否起点特殊区域
     */
    private Boolean originSpecialZone;

    /**
     * 是否终点特殊区域
     */
    private Boolean destSpecialZone;

    /**
     * 订单需求类型 1普通拼车 2机场专线
     */
    private Integer orderDemand;

    /**
     * 客服电话
     */
    private String serviceTel;

    /**
     * 订单里程金额
     */
    private BigDecimal orderFare;
}
